home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Browsers, Managers & Extensions / IE Tab 1.5.2 / ie_tab-1.5.20080618-fx-win.xpi / chrome / content / ietabUtils.js < prev    next >
Text File  |  2006-12-08  |  8KB  |  206 lines

  1. //-----------------------------------------------------------------------------
  2.  
  3. IeTab.prototype.mlog = function(text) {
  4.   Components.classes["@mozilla.org/consoleservice;1"]
  5.     .getService(Components.interfaces.nsIConsoleService)
  6.     .logStringMessage("IeTab: "+text);
  7. }
  8.  
  9. //-----------------------------------------------------------------------------
  10.  
  11. IeTab.prototype.addEventListener = function(obj, type, listener) {
  12.    if (typeof(obj) == "string") obj = document.getElementById(obj);
  13.    if (obj) obj.addEventListener(type, listener, false);
  14. }
  15. IeTab.prototype.removeEventListener = function(obj, type, listener) {
  16.    if (typeof(obj) == "string") obj = document.getElementById(obj);
  17.    if (obj) obj.removeEventListener(type, listener, false);
  18. }
  19.  
  20. IeTab.prototype.addEventListenerByTagName = function(tag, type, listener) {
  21.    var objs = document.getElementsByTagName(tag);
  22.    for (var i = 0; i < objs.length; i++) {
  23.       objs[i].addEventListener(type, listener, false);
  24.    }
  25. }
  26. IeTab.prototype.removeEventListenerByTagName = function(tag, type, listener) {
  27.    var objs = document.getElementsByTagName(tag);
  28.    for (var i = 0; i < objs.length; i++) {
  29.       objs[i].removeEventListener(type, listener, false);
  30.    }
  31. }
  32.  
  33. //-----------------------------------------------------------------------------
  34.  
  35. IeTab.prototype.hookCode = function(orgFunc, orgCode, myCode) {
  36.    if (orgFunc == "") return;
  37.    switch (orgCode) {
  38.    case "{":
  39.       orgCode = /{/;
  40.       myCode = "{"+myCode;
  41.       break;
  42.    case "}":
  43.       orgCode = /}$/;
  44.       myCode = myCode+"}";
  45.       break;
  46.    default:
  47.    }
  48.    try { eval(orgFunc + "=" + eval(orgFunc).toString().replace(orgCode, myCode)); }catch(e){ this.mlog("Failed to hook function: "+orgFunc); }
  49. }
  50.  
  51. IeTab.prototype.hookAttr = function(parentNode, attrName, myFunc) {
  52.    if (typeof(parentNode) == "string") parentNode = document.getElementById(parentNode);
  53.    try { parentNode.setAttribute(attrName, myFunc + parentNode.getAttribute(attrName)); }catch(e){ this.mlog("Failed to hook attribute: "+attrName); }
  54. }
  55.  
  56. IeTab.prototype.hookProp = function(parentNode, propName, myGetter, mySetter) {
  57.    var oGetter = parentNode.__lookupGetter__(propName);
  58.    var oSetter = parentNode.__lookupSetter__(propName);
  59.    if (oGetter && myGetter) myGetter = oGetter.toString().replace(/{/, "{"+myGetter.toString().replace(/^.*{/,"").replace(/.*}$/,""));
  60.    if (oSetter && mySetter) mySetter = oSetter.toString().replace(/{/, "{"+mySetter.toString().replace(/^.*{/,"").replace(/.*}$/,""));
  61.    if (!myGetter) myGetter = oGetter;
  62.    if (!mySetter) mySetter = oSetter;
  63.    if (myGetter) try { eval('parentNode.__defineGetter__(propName, '+ myGetter.toString() +');'); }catch(e){ this.mlog("Failed to hook property Getter: "+propName); }
  64.    if (mySetter) try { eval('parentNode.__defineSetter__(propName, '+ mySetter.toString() +');'); }catch(e){ this.mlog("Failed to hook property Setter: "+propName); }
  65. }
  66.  
  67. //-----------------------------------------------------------------------------
  68.  
  69. IeTab.prototype.trim = function(s) {
  70.    if (s) return s.replace(/^\s+/g,"").replace(/\s+$/g,""); else return "";
  71. }
  72.  
  73. IeTab.prototype.startsWith = function(s, prefix) {
  74.    if (s) return( (s.substring(0, prefix.length) == prefix) ); else return false;
  75. }
  76.  
  77. //-----------------------------------------------------------------------------
  78.  
  79. IeTab.prototype.getBoolPref = function(prefName, defval) {
  80.    var result = defval;
  81.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  82.    var prefs = prefservice.getBranch("");
  83.    if (prefs.getPrefType(prefName) == prefs.PREF_BOOL) {
  84.        try { result = prefs.getBoolPref(prefName); }catch(e){}
  85.    }
  86.    return(result);
  87. }
  88.  
  89. IeTab.prototype.getIntPref = function(prefName, defval) {
  90.    var result = defval;
  91.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  92.    var prefs = prefservice.getBranch("");
  93.    if (prefs.getPrefType(prefName) == prefs.PREF_INT) {
  94.        try { result = prefs.getIntPref(prefName); }catch(e){}
  95.    }
  96.    return(result);
  97. }
  98.  
  99. IeTab.prototype.getStrPref = function(prefName, defval) {
  100.    var result = defval;
  101.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  102.    var prefs = prefservice.getBranch("");
  103.    if (prefs.getPrefType(prefName) == prefs.PREF_STRING) {
  104.        try { result = prefs.getComplexValue(prefName, Components.interfaces.nsISupportsString).data; }catch(e){}
  105.    }
  106.    return(result);
  107. }
  108.  
  109. //-----------------------------------------------------------------------------
  110.  
  111. IeTab.prototype.setBoolPref = function(prefName, value) {
  112.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  113.    var prefs = prefservice.getBranch("");
  114.    try { prefs.setBoolPref(prefName, value); } catch(e){}
  115. }
  116.  
  117. IeTab.prototype.setIntPref = function(prefName, value) {
  118.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  119.    var prefs = prefservice.getBranch("");
  120.    try { prefs.setIntPref(prefName, value); } catch(e){}
  121. }
  122.  
  123. IeTab.prototype.setStrPref = function(prefName, value) {
  124.    var prefservice = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  125.    var prefs = prefservice.getBranch("");
  126.    var sString = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  127.    sString.data = value;
  128.    try { prefs.setComplexValue(prefName, Components.interfaces.nsISupportsString, sString); } catch(e){}
  129. }
  130.  
  131. //-----------------------------------------------------------------------------
  132.  
  133. IeTab.prototype.getDefaultCharset = function(defval) {
  134.    var charset = this.getStrPref("ietab.intl.charset.default", "");
  135.    if (charset.length) return charset;
  136.     var gPrefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
  137.     if(gPrefs.prefHasUserValue("intl.charset.default")) {
  138.        return gPrefs.getCharPref("intl.charset.default");
  139.     } else {
  140.        var strBundle = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService);
  141.        var intlMess = strBundle.createBundle("chrome://global-platform/locale/intl.properties");
  142.        try {
  143.           return intlMess.GetStringFromName("intl.charset.default");
  144.        } catch(e) {
  145.           return defval;
  146.       }
  147.     }
  148. }
  149.  
  150. IeTab.prototype.convertToUTF8 = function(data, charset) {
  151.    try {
  152.       data = decodeURI(data);
  153.    }catch(e){
  154.       if (!charset) charset = gIeTab.getDefaultCharset();
  155.       if (charset) {
  156.          var uc = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
  157.          try {
  158.             uc.charset = charset;
  159.             data = uc.ConvertToUnicode(unescape(data));
  160.             data = decodeURI(data);
  161.          }catch(e){}
  162.          uc.Finish();
  163.       }
  164.    }
  165.    return data;
  166. }
  167.  
  168. IeTab.prototype.convertToASCII = function(data, charset) {
  169.    if (!charset) charset = gIeTab.getDefaultCharset();
  170.    if (charset) {
  171.       var uc = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
  172.       uc.charset = charset;
  173.       try {
  174.          data = uc.ConvertFromUnicode(data);
  175.       }catch(e){
  176.          data = uc.ConvertToUnicode(unescape(data));
  177.          data = decodeURI(data);
  178.          data = uc.ConvertFromUnicode(data);
  179.       }
  180.       uc.Finish();
  181.    }
  182.    return data;
  183. }
  184.  
  185. //-----------------------------------------------------------------------------
  186.  
  187. IeTab.prototype.getUrlDomain = function(url) {
  188.    if (url && !gIeTab.startsWith(url, "about:")) {
  189.       if (/^file:\/\/.*/.test(url)) return url;
  190.       var matches = url.match(/^([A-Za-z]+:\/+)*([^\:^\/]+):?(\d*)(\/.*)*/);
  191.       if (matches) url = matches[1]+matches[2]+(matches[3]==""?"":":"+matches[3])+"/";
  192.    }
  193.    return url;
  194. }
  195.  
  196. IeTab.prototype.getUrlHost = function(url) {
  197.    if (url && !gIeTab.startsWith(url, "about:")) {
  198.       if (/^file:\/\/.*/.test(url)) return url;
  199.       var matches = url.match(/^([A-Za-z]+:\/+)*([^\:^\/]+):?(\d*)(\/.*)*/);
  200.       if (matches) url = matches[2];
  201.    }
  202.    return url;
  203. }
  204.  
  205. //-----------------------------------------------------------------------------
  206.